/*
 * Copyright (C) 2023 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.google.android.accessibility.braille.brailledisplay.platform.connect.device;

import android.hardware.usb.UsbDevice;
import com.google.auto.value.AutoValue;

/** Connectable USB device. */
@AutoValue
public abstract class ConnectableUsbDevice extends ConnectableDevice {

  public abstract UsbDevice usbDevice();

  @Override
  public String name() {
    return usbDevice().getProductName();
  }

  @Override
  public String address() {
    return String.valueOf(usbDevice().getDeviceId());
  }

  public static ConnectableUsbDevice.Builder builder() {
    return new AutoValue_ConnectableUsbDevice.Builder();
  }

  /** Builder for {@code ConnectableUsbDevice}. */
  @AutoValue.Builder
  public abstract static class Builder {

    public abstract Builder setUsbDevice(UsbDevice device);

    public abstract ConnectableUsbDevice build();
  }
}
